﻿<p>An <em>IfcObject</em> is the generalization of any semantically treated thing or process. Objects are things as they appear - i.e. occurrences.</p>

<blockquote class="note">
NOTE&nbsp; Examples of <em>IfcObject</em> include physically tangible items such as wall, beam or covering, physically existing items such as spaces, or conceptual items such as grids or virtual boundaries. It also stands for processes such as work tasks, for controls such as cost items, or for actors such as persons involved in the design process.
</blockquote>

<p>Objects can be named, using the inherited <em>Name</em> attribute, which should be a user recognizable label for the object occurrance. Further explanations to the object can be given using the inherited <em>Description</em> attribute. The <em>ObjectType</em> attribute is used:</p>
<ul>
 <li>to store the user defined value for all subtypes of <em>IfcObject</em>, where a <em>PredefinedType</em> attribute is given, and its value is set to USERDEFINED.</li>
 <li>to provide a type information (could be seen as a very lightweight classifier) of the subtype of <em>IfcObject</em>, if no <em>PredefinedType</em> attribute is given. This is often the case, if no comprehensive list of predefined types is available.</li>
</ul>
<p>Objects are independent pieces of information that might contain or reference other pieces of information. There are several relationships in which objects can be involved:</p>
<ul>
 <li><b>Association to external/internal resource information</b> - an association relationship that refers to external/internal
sources of information. See supertype <em>IfcObjectDefinition</em> for more information.</li>
 <li><b>Assignment of other objects</b> - an assignment relationship that refers to other types of objects. See supertype <em>IfcObjectDefinition</em> for more information.</li>
 <li><b>Aggregation of other objects</b> - an aggregation relationship that establishes a whole/part relation. Objects can either be a whole, or a part, or both. See supertype <em>IfcObjectDefinition</em> for more information.</li>
 <li><b>Assignment of a type</b> : <em>IsTypedBy</em> - a definition relationship <em>IfcRelDefinesByType</em> that uses a type definition to define the common characteristics of this occurrences, potentially including the common shape representation and common properties of all object occurrences assigned to this type. It is a specific - occurrence relationship with implied dependencies (as the occurrence properties depend on the properties of the type, but may override them).</li>
 <li><b>Assignment of a partial type</b> : <em>IsDeclaredBy</em>, <em>Declares</em> - a definition relationship <em>IfcRelDefinesByObject</em> that uses a component of a type definition (a part of a type, called the "declaring part") to define a component of an occurence (part of occurrence, called the "reflected part"). This is also refered to as a "deep copy". The common characteristics of all parts in the occurrence are defined by parts in the type. It is a specific - occurrence  relationship with implied dependencies (as the occurrence properties depend on the properties of the type, but may override them).<br></li>
 <li><b>Assignment of property sets</b> : <em>IsDefinedBy</em> - a definition relationship <em>IfcRelDefinesByProperties</em> that
assignes property set definitions to the object occurrence.</li>
</ul>

<blockquote class="note">NOTE&nbsp; See <em>IfcRelDefinesByType</em> for an explanatory figure. Also see there for how to override type properties by occurrence properties. See <em>IfcRelDefinesByObject</em> for an explanatory figure for the assignment of a partial type.</blockquote>

<blockquote class="history">HISTORY&nbsp; New entity in IFC1.0</blockquote>

<blockquote class="change-ifc2x4">IFC4 CHANGE&nbsp; The inverse relationships <em>Declares</em>, <em>IsDeclaredBy</em>, and <em>IsTypedBy</em> have been added, types are not longer included in the <em>IsDefinesBy</em> relationship. <em>IfcProject</em> has been promoted to be a subtype of <em>IfcObjectDefinition</em> -&gt; <em>IfcContext</em>.</blockquote>

<p class="spec-head">Informal Propositions:</p>
<ol>
<li>A partial type assignment, i.e. the inverse attribute
<em>IsDeclaredBy</em>, or <em>Declares</em> shall only be used, if
the object is part of a decomposition, i.e. if either
<em>IsDecomposedBy</em>, or <em>Decomposes</em> is exerted.</li>
</ol>